clean-code 基本原則
大前提:変更しやすいシステムを作る
1. 可読性が高い
2. 各部品の変更による影響が小さい
3. 各部品の変更による影響が見えやすい(部品間の依存関係が見えやすい)
4. 依存の循環・相互依存が起きてない
原則一覧
人間がいつシステムを見ても解読しやすい状態を心がける
機能間(モジュール、関数、クラスなど全て)の繋がりは必ずインターフェースを意識すること
単一責任の原則を重視する
使われる部品の意図する用途と使う側の目的が合致しなければ、その部品を使うべきではない。
これから先何回も変更が加えられるシステムは、適度な部品分割を意識する
逆に、システムが小さい+この先変更はないなら、部品分割せずに作ってしまえばいい。
変更しやすくするために適度な部品化を行うのである。
部品化をすることで、後で見ても人間がシステムを理解可能 + 変更容易という効能がある
変更の影響範囲を小さくするために、原則、変数のスコープは小さくしておくことが望ましい
だからと言って、グローバル変数を絶対に利用してはいけないということではない
システム全体から同じ目的で利用される変数はむしろグローバルにしておく方が良い
条件分岐(if, switch)をポリモーフィズムで代替できそうならそうする
引数の数が多すぎるのは、その関数が単一責任の原則に反してる可能性がある(もちろん、反してない場合もある)
反してる場合は、引数を別関数 or クラスに分離した方がいい。
値の候補が固まってるのような変数は、列挙型(Enum)をちゃんと使って、意図しない値が入る可能性を0にする。